function register() {
    // console.log("dfas")//将代码打印到控制台
// ^[a-zA-Z0-9_-]{4,16}$4到16位（字母，数字，下划线，减号）
//    匹配4到16位  {m，n}大括号表示匹配范围  m表示开始,n表示结束
//    通过大括号里面的数字可以看出中括号里面只能取一位，
//    a-z表示所有的小写字母
//    A-Z表示所有的大写字母
//    0-9表示所有的数字
//    要学习正则表达式  首先要学习js的相关内容
//    JavaScript   编程语言  数据类型
//    值类型(基本类型)：
//    字符串（String）、
//    数字(Number)、
//    布尔(Boolean)、
//    对空（Null）、
//    未定义（Undefined）、
//    Symbol。
//    引用数据类型：
//    对象(Object)、
//    数组(Array)、
//    函数(Function)。
//    变量类型  变量名=变量值
//    let  name="aaaa";  局部变量
//    var  sex="nv";  淘汰 全局变量
//    const age=19; 常量
//    js 版本号   var  es5之前的版本  后面被let代替
//     let name = "aaaa";  //局部变量
//     var sex = "nv"; // 淘汰 全局变量
//     const age = 19;// 常量
//
//     for (let i = 0; i < 5; i++) {
//         let name1 = "aaaa";  //局部变量
//         var sex1 = "nv"; // 淘汰 全局变量
//         const age1 = 19;// 常量
//     }
    //这里得出一个结论：var无论定义到哪一个地方，都能进行访问。
    // console.log(age)
//    几个常用数据类型的定义
//     let string = "string";
//     let number = 1.21;
//     let object = {"key": "value"};
//     let array = [string, number, object];
//     let boo = true;
    // let nullvalue = null;
    // let undefined = undefined;
//    js构造方法   一般情况下  把大写的方法叫做构造函数
//    构造方法--构造方法其实就是一个对象
//
//     let user = new User("a");
//     console.log(user)
//普通方法
    // function user() {
    //
    // }
//    命名规范---记得平时一定普通方法小驼峰命名
//     let username="fdsfasdf432asdfa\ng48dsGDSADSfjhgkghj";
//     let reg = /F/im;
//     reg.test(username)
//     username.match()
//     let aa = new RegExp(reg);
//得到表单数据，js写法的两种方法
//    原生js
//     let username = document.getElementById("username");//拿到具体对象
//     let value=username.value;
//     console.log(value);
// //    jQuery
//    let vv= $("#username").val();
//     console.log(vv,1234);
//点击注册按钮时，需要再次判断用户是否输入正确
    if (checkUsername() && checkPassword() && checkPass()) {
        //$("#username").val(),这里面的username对应的是页面的id
        // username: $("#username").val(),左边的username用于在servlet取值
        //对应的是req.getParameter("username");这里的username
        let data = {
            username: $("#username").val(),
            password: $("#password").val(),
            phone: $("#phone").val(),
            weight: $("#weight").val(),
            email: $("#email").val(),
            sex: $('input:radio[name=sex]:checked').val(),
            hobby: getHobby().toString(),
            birthday: $("#birthday").val()
        };
        console.log(data);
        $.ajax({
            url: '/register',//对应的是form表单的action，同时对应的webServlet注解
            data: data,//将所有数据封装成js对象  --json对象
            type: 'post',
            dataType: 'json',//接口规范
            success: function (data) {//data是后台返回给前端的数据,一般情况下也是json对象
                console.log(data);
                if (data.result == "success") {
                    // window.location.href = "login.html";
                    window.open("/html/login.html");
                } else if (data.result == "isHave") {
                    alert("当前用户名已经存在，请重写注册");
                } else {
                    alert("很遗憾，你的注册失败，请重写注册");
                }
            }
        })
    } else {
        alert("请确认是否都输入正确")
    }
}

function getHobby() {
    let vals = [];
    $('input:checkbox[name=hobby]:checked').each(function (index, item) {
        vals.push($(this).val());//数组的赋值  push
    });
    return vals;
}

function checkUsername() {
    let reg = /^[a-zA-Z0-9_-]{4,16}$/;
    // let username = $("#username").val();
    let obj = $("#username");
    return tips(obj, reg.test(obj.val()), "用户名正确", "用户名错误")
    // if (reg.test(username)) {
    //
    //     obj.parent().next().html("正确");
    //     // document.getElementById("tips").style.color = "green";
    //     // $("#tips").css("color", "green");
    //     obj.parent().next().removeClass("error-tis");
    //     obj.parent().next().addClass("success-tis")
    // } else {
    //     obj.parent().next().html("错误");
    //     // document.getElementById("tips").style.color = "red";
    //     // $("#tips").css("color", "red");
    //     obj.parent().next().removeClass("success-tis");
    //     obj.parent().next().addClass("error-tis")
    // }
}

function checkPassword() {
    let reg = /^[a-zA-Z0-9_-]{4,16}$/;
    let obj = $("#password");
    return tips(obj, reg.test(obj.val()), "密码正确", "密码错误")
    // if (reg.test(password)) {
    //
    //     obj.parent().next().html("正确");
    //     // document.getElementById("tips").style.color = "green";
    //     // $("#tips").css("color", "green");
    //     obj.parent().next().removeClass("error-tis");
    //     obj.parent().next().addClass("success-tis")
    // } else {
    //     obj.parent().next().html("错误");
    //     // document.getElementById("tips").style.color = "red";
    //     // $("#tips").css("color", "red");
    //     obj.parent().next().removeClass("success-tis");
    //     obj.parent().next().addClass("error-tis")
    // }
}

function tips(obj, boo, success, error) {
    if (boo) {
        obj.parent().next().html(success);
        // document.getElementById("tips").style.color = "green";
        // $("#tips").css("color", "green");
        obj.parent().next().removeClass("error-tis");
        obj.parent().next().addClass("success-tis")
        return true;
    } else {
        obj.parent().next().html(error);
        // document.getElementById("tips").style.color = "red";
        // $("#tips").css("color", "red");
        obj.parent().next().removeClass("success-tis");
        obj.parent().next().addClass("error-tis")
        return false;
    }
}

function checkPass() {
    let password = $("#password").val();
    let checkPass = $("#checkPass").val();
    return tips($("#checkPass"), password == checkPass, "密码一致", "密码不一致");
}
function toLogin() {
    window.open("/html/login.html");
}